In general, when a client device such as a USB is linked to a host device, the host device registers the client device in its own registry through an enumeration process. At this time, the enumeration process begins when the host device is linked to the client device. Furthermore, when a link with the client device is sensed by the host device, it starts a real information exchange with the client device by sending a Get_Descriptor command to the linked client device. Furthermore, when the client device receives a Get_Descriptor command in response to that command, it transmits a Device_Descriptor signal including various information about the client device to the host device. The host device analyzes the transmitted Device_Descriptor signal to classify and recognize a function of the USB device based upon this signal.
Here, the function of a USB device is classified into several class functions as defined by the USB standard, and typical class functions of them are Mass Storage Class, Human Interface Class, Audio Class, Video Class, Communications Device Class, and the like. Each device supports at least one class function from among those various class functions, and when a device having at least two class functions is linked to a host, an enumeration operation is largely classified into two kinds.
The first type of enumeration operation recognizes each USB device that is linked with the host as a device having only one class function from among the class functions provided by the relevant device. For example, the client device is recognized as Mass Storage Class by performing an enumeration process, and then the client device is recognized only as Mass Storage Class even if other class functions are supported by the relevant device.
The second type of enumeration operation recognizes all of the class functions included in a USB device, registering each of them in the registry of a host device. As such, the functions provided by the USB device can be activated and utilized one-by-one.